home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1994 / MacHack 1994.toast / MacHack™94 / Talks & Papers / Timothy Knox / Help / Help Files / Foreign Code / fib < prev    next >
Text File  |  1994-06-24  |  4KB  |  73 lines

  1. (thunk (info (r2) (d0 a0 r0 a1 m)) 
  2.   ((move L (# 4) d0) 
  3.    (move L (data (thunk (info (d0) (a0)) () GetABlock)) a0) 
  4.    (jsr (8 a0)) 
  5.    (move B (# 12) (-3 a0)) 
  6.    (move L r2 (4 a0)) 
  7.    (move L (data (thunk (info (r2 lp) (m r0 r1 r2 a0 a1 d0 d1)) 
  8.                         ((move L (# 4) d0) 
  9.                          (move L (data (thunk (info (d0) (a0)) () GetABlock)) a0) 
  10.                          (jsr (8 a0)) 
  11.                          (move B (# 17) (-3 a0)) 
  12.                          (move L r2 (4 a0)) 
  13.                          (move L a0 r2) 
  14.                          (lea (8 a0) a0) 
  15.                          (move L (- lp) (a0 +)) 
  16.                          (lea (-4 lp) lp) 
  17.                          (move L r2 (lp +)) 
  18.                          (move L (data {Closure:{Code 680xx for <?} Env:()}) (lp +)) 
  19.                          (move L (8 r2) (lp +)) 
  20.                          (move L (data 2) (lp +)) 
  21.                          (move L (data {Closure:{Code 680xx for <?} Env:()}) a0) 
  22.                          (move L (4 a0) r2) 
  23.                          (move L (a0) a0) 
  24.                          (jsr (8 a0)) 
  25.                          (move L (- lp) r2) 
  26.                          (cmp L r0 (data ƒ)) 
  27.                          (beq cond-faux 1495668) 
  28.                          (move L (data 1) r0) 
  29.                          (rts) 
  30.                          (cond-faux 1495668) 
  31.                          (move L (data {Closure:{Code 680xx for +} Env:()}) (lp +)) 
  32.                          (move L r2 (lp +)) 
  33.                          (move L (data {Closure:((n)) Env:()}) (lp +)) 
  34.                          (move L (data {Closure:{Code 680xx for 1-} Env:()}) (lp +)) 
  35.                          (move L (8 r2) (lp +)) 
  36.                          (move L (data {Closure:{Code 680xx for 1-} Env:()}) a0) 
  37.                          (move L (4 a0) r2) 
  38.                          (move L (a0) a0) 
  39.                          (jsr (8 a0)) 
  40.                          (move L r0 (lp +)) 
  41.                          (move L (data {Closure:((n)) Env:()}) a0) 
  42.                          (move L (4 a0) r2) 
  43.                          (move L (a0) a0) 
  44.                          (jsr (8 a0)) 
  45.                          (move L r0 (lp +)) 
  46.                          (move L (- lp) r2) 
  47.                          (move L (data {Closure:((n)) Env:()}) (lp +)) 
  48.                          (move L (data {Closure:{Code 680xx for -} Env:()}) (lp +)) 
  49.                          (move L (8 r2) (lp +)) 
  50.                          (move L (data 2) (lp +)) 
  51.                          (move L (data {Closure:{Code 680xx for -} Env:()}) a0) 
  52.                          (move L (4 a0) r2) 
  53.                          (move L (a0) a0) 
  54.                          (jsr (8 a0)) 
  55.                          (move L r0 (lp +)) 
  56.                          (move L (data {Closure:((n)) Env:()}) a0) 
  57.                          (move L (4 a0) r2) 
  58.                          (move L (a0) a0) 
  59.                          (jsr (8 a0)) 
  60.                          (move L r0 (lp +)) 
  61.                          (move L (data {Closure:{Code 680xx for +} Env:()}) a0) 
  62.                          (move L (4 a0) r2) 
  63.                          (move L (a0) a0) 
  64.                          (jmp (8 a0))) 
  65.                         ((cond (<? n 2) 1 (+ (fib (1- n)) (fib (- n 2))))))) 
  66.          (a0)) 
  67.    (move W (# 1) (10 a0)) 
  68.    (move L a0 r0) 
  69.    (move L (data fib) a1) 
  70.    (move L r0 (4 a1)) 
  71.    (rts)) 
  72.   ((define (fib n) (cond (<? n 2) 1 (+ (fib (1- n)) (fib (- n 2)))))))
  73.